import functools

from flask import session, current_app, g

from info.models import User


def index_convert(index):
    index_dict = {
        1: 'first',
        2: 'second',
        3: 'third'
    }
    return index_dict.get(index, '')


# 定义一个装饰器，查看用户登录信息
def user_login_data(f):
    # 对闭包进行装饰，functools.wrap可以让闭包使用指定函数的信息(如函数名，f__name__,函数文档注释）
    @functools.wraps(f)
    def wrapper(*args, **kwargs):
        # 判断用户是否登陆,从session中取user_id
        user_id = session.get('user_id')
        user = None
        if user_id:  # 用户已登陆
            try:
                # 从数据库中取出用户
                user = User.query.get(user_id)
            except BaseException as e:
                current_app.logger.error(e)
        g.user = user
        return f(*args, **kwargs)
    return wrapper


access_key = "kJ8wVO7lmFGsdvtI5M7eQDEJ1eT3Vrygb4SmR00E"
secret_key = "rGwHyAvnlLK7rU4htRpNYzpuz0OHJKzX2O1LWTNl"
bucket_name = "infonews"  # 存储空间名称
def img_upload(data):
    """
    上传图片
    :param data: 上传的文件
    :return: 生成随机的文件名
    """
    import qiniu
    q = qiniu.Auth(access_key, secret_key)
    key = None  # key文件名，不设置生成随机文件名
    token = q.upload_token(bucket_name)
    ret, info = qiniu.put_data(token, key, data)
    if ret is not None:
        return ret.get('key')  # 获取随机的文件名
    else:
        raise BaseException(info)